Information systems have evolved from centralized mainframe computer systems supporting a large number of users to distributed computer systems based on local area network (LAN) architectures. As the cost-to-processing-power ratios for desktop PCs and network servers have dropped precipitously, LAN systems have proved to be highly cost effective. As a result, the number of LANs and LAN-based applications has exploded.
A consequential development relating to the increased popularity of LANs has been the interconnection of remote LANs, computers, and other equipment into wide area networks (WANs) in order to make more resources available to users. However, a LAN backbone can transmit data between users at high bandwidth rates for only relatively short distances. In order to interconnect devices across large distances, different communication protocols have been developed. These include packet switching protocols, such as X.25, ISDN, frame relay, and ATM, among others.
Packet switching involves the transmission of data in packets through a network. Each block of end-user data that is to be transmitted is divided into packets. A unique identifier, a sequence number and a destination address are attached to each data packet. The packets are independent and may traverse the data network by different routes. The packets may incur different levels of propagation delay, or latency, caused by physical paths of different length. The packets may also be held for varying amounts of delay time in packet buffers in intermediated switches in the network. The packets may also be switched through differing numbers of packet switches as they traverse the network, wherein each switch has an associated processing delay caused by error detection and correction.
As a result, the packets may arrive out-of-order at the destination node. However, the destination node uses the identification and sequencing information in each data packet to assemble the data packets back in the proper order before continuing to process the original end-user data block.
To enhance the reliability of a packet switched network, it is common practice to build the packet switches as redundant devices. Each packet switch contains a primary (also called "master" or "active") packet routing engine that ordinarily performs packet routing and a secondary (also called "slave" or "standby") packet routing engine that takes over from the primary packet routing engine upon failure or upon the occurrence of certain selected events.
However, the switchover (or failover) from a primary to a secondary packet routing engine is frequently a disruptive event. At the time of switchover, the primary packet routing engine typically contains unprocessed data packets in input buffers, processed data packets in output buffers, and in-process data packets that are currently being processed by the control processor of the primary packet routing engine. Since the in-process data may affect the contents of both the input buffers and the output buffers, the loss of this in-process data during switchover to the secondary causes service disruptions.
There is therefore a need in the art for an improved redundant data packet switch that provides a more seamless switchover from a primary packet routing engine to a secondary packet routing engine. In particular, there is a need in the art for an improved redundant data packet switch in which the secondary packet routing engine is able to identify in-process data held in the primary packet routing engine and is able to correctly re-process such in-process data after a switch-over has occurred.